package com.hxx.day8;

import org.junit.Test;

import java.util.TreeSet;

public class TestDemo {
    /**
     * 测试无参数无返回值的函数式接口
     */
    @Test
    public void test1(){
        FunInter f = () -> System.out.println("show");
        f.show();
    }
    /**
     * 测试有参数无返回值的函数式接口
     */
    @Test
    public void test2(){
       FunInter1 f1 = (i,n) -> System.out.println(i+n);
       f1.show(10,20);
    }
    /**
     * 测试有参数有返回值的函数式接口
     */
    @Test
    public void test3(){
        FunInter2 f2 = (i,n) -> i+n;
        int sum = f2.sum(10, 20);
        System.out.println(sum);
    }
    /**
     * 测试有参数有返回值的函数式接口，使用代码块
     * 可以有多个语句，但是必须有返回值,关键字return不能省略
     */
    @Test
    public void test4(){
        FunInter2 f2 = (i,n) -> {
            return i + n;
        };
        int sum = f2.sum(10, 20);
        System.out.println(sum);
    }
    /**
     * 使用treeset进行比较，自定义比较规则
     * Comparator接口的compare方法,是函数式接口
     */
    @Test
    public void test5(){
        TreeSet<Integer> ts = new TreeSet<>((x,y)->y-x);
        ts.add(10);
        ts.add(20);
        ts.add(30);
        ts.add(40);
        ts.add(50);
        System.out.println(ts);
    }
}

/**
 * 函数式接口
 * 只能有一个抽象方法
 * 没有参数也没有返回值
 */
@FunctionalInterface
interface FunInter{
    void show();
}

interface FunInter1{
    void show(int i,int n);
}
interface FunInter2{
    int sum(int i,int n);
}
























